<?php
function convertEmojiToJson($filename = 'emoji.txt') {
    // 检查文件是否存在
    if (!file_exists($filename)) {
        die("错误：文件 '$filename' 不存在！\n");
    }

    // 读取文件内容
    $content = file_get_contents($filename);
    if ($content === false) {
        die("错误：无法读取文件 '$filename'！\n");
    }

    // 按行分割内容
    $lines = explode("\n", $content);

    // 去除空行和首尾空白
    $lines = array_map('trim', $lines);
    $lines = array_filter($lines, function($line) {
        return $line !== '';
    });

    // 重新索引数组
    $lines = array_values($lines);

    // 检查行数是否为偶数
    if (count($lines) % 2 !== 0) {
        die("错误：文件格式不正确！每个emoji都应该有对应的标题。当前行数：" . count($lines) . "\n");
    }

    $result = [];

    // 按对处理每两行
    for ($i = 0; $i < count($lines); $i += 2) {
        $emoji = $lines[$i];
        $title = $lines[$i + 1];

        // 验证emoji行是否包含emoji字符
        if (!preg_match('/[\x{1F600}-\x{1F64F}]|[\x{1F300}-\x{1F5FF}]|[\x{1F680}-\x{1F6FF}]|[\x{1F1E0}-\x{1F1FF}]|[\x{2600}-\x{26FF}]|[\x{2700}-\x{27BF}]/u', $emoji)) {
            echo "警告：第" . ($i + 1) . "行可能不包含emoji字符：$emoji\n";
        }

        $result[$title] = $emoji;
    }

    return $result;
}

function saveJsonToFile($data, $outputFile = 'emoji.json') {
    $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

    if ($json === false) {
        die("错误：无法转换为JSON格式！\n");
    }

    if (file_put_contents($outputFile, $json) === false) {
        die("错误：无法保存到文件 '$outputFile'！\n");
    }

    echo "成功保存到文件：$outputFile\n";
}
try {
    echo "开始处理emoji.txt文件...\n";

    // 转换文件
    $emojiData = convertEmojiToJson('emoji.txt');

    echo "成功读取 " . count($emojiData) . " 个emoji项目\n";

    // 显示前几个结果作为预览
    echo "\n预览结果：\n";
    $count = 0;
    foreach ($emojiData as $title => $emoji) {
        echo "$title: $emoji\n";
        $count++;
        if ($count >= 5) {
            if (count($emojiData) > 5) {
                echo "... 还有 " . (count($emojiData) - 5) . " 个项目\n";
            }
            break;
        }
    }

    // 保存为JSON文件
    saveJsonToFile($emojiData, 'emoji.json');

    // 也可以直接输出JSON字符串
    echo "\nJSON输出：\n";
    echo json_encode($emojiData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

} catch (\Exception $e) {
    echo "发生错误：" . $e->getMessage() . "\n";
}
